--- 
title: Developing Firmware
---
<h1>Developing Firmware</h1>

<p>You'll need a toolchain that supports ARM Cortex-M3.  The Makefiles in
Project Ubertooth are designed for GCC and a Linux-based toolchain,
specifically the free installation provided at <a
href="https://launchpad.net/gcc-arm-embedded">https://launchpad.net/gcc-arm-embedded</a>,
but it should be possible to compile firmware with any development environment
for the Cortex-M3.  Just unpack the archive and add the bin directory to your
PATH.</p>

<p>Prior to r518, we used the <a
href="http://www.codesourcery.com/">Codesourcery</a> toolchain, but it has
become harder to locate.</p>


<p>Although firmware source and binary images can be found in the 
<a href="https://github.com/greatscottgadgets/ubertooth/releases">release downloads</a>, 
you will probably want fresh code from <a
href="https://www.github.com/greatscottgadgets/ubertooth">git</a>.</p>

<p>Ubertooth Zero and Ubertooth One are not binary compatible.  The default
target is Ubertooth One.  If you are compiling firmware for Ubertooth Zero, set
the environment variable BOARD = UBERTOOTH_ZERO.</p>
